#ifndef _META_IO_H_
#define _META_IO_H_
#include <string>
#pragma warning(disable : 4996)
template<typename Meta>
class CMetaIO
{
public:
	void SetMetaPath(const char* fname)
	{
		m_fname = fname;	
	}

	bool Save(const Meta& data)
	{
#pragma warning(disable: 4996)
		FILE* fp = fopen(m_fname.c_str(),"wb");
#pragma warning(default : 4996)
		if(!fp)
		{
			return false;
		}
		fwrite(&data,sizeof(Meta),1,fp);
		fclose(fp);
		return true;
	}
	bool Load(Meta* pdata)
	{
		FILE* fp = fopen(m_fname.c_str(),"rb");
		if(!fp)
		{
			return false;
		}
		fseek(fp,0,SEEK_END);
		int len = ftell(fp);
		if(len <sizeof(Meta))
		{
			fclose(fp);
			return false;
		}
		fseek(fp,0,SEEK_SET);
		fread(pdata,sizeof(Meta),1,fp);
		fclose(fp);
		return true;				
	}
	protected:
	std::string m_fname;

};

#endif